package com.smh.a01CollectionDemo1;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

public class CollectionDemo3 {
    public static void main(String[] args) {
        //迭代器
        Collection<String> collection = new ArrayList<>();
        collection.add("asd");
        collection.add("zxc");
        collection.add("qwe");
        collection.add("fgh");
        Iterator<String> iterator = collection.iterator();
        //迭代器像是一个箭头,指向集合的0索引处.
        while (iterator.hasNext()){
            //获取元素并移动指针.
            System.out.println(iterator.next());
        }

        System.out.println("-----------------------");
        //iterator.next();
        //NoSuchElementException
        //如果要二次便利,就要获取一个新的迭代器对象.

        //迭代器遍历完后,指针不会复位
        //循环中只能调用一次next();
        //遍历时不能用集合的方法惊醒增加和删除
        Iterator<String> iterator2 = collection.iterator();
        //迭代器像是一个箭头,指向集合的0索引处.
        while (iterator2.hasNext()){
            //获取元素并移动指针.
            String s = iterator2.next();
            System.out.println(s);
            if (s.equals("asd")){
                //collection.remove("asd");
                //可以用iterator自带的方法
                iterator2.remove();
            }

        }
        System.out.println(collection);
        System.out.println("------------------------");
        //单列集合和数组才能用for增强
        for (String s:collection){
            //只是把集合中的数据传给s,s的修改,不会改变集合中的数据
            s="111";
            System.out.println(s);
        }
        for (String s : collection) {
            System.out.println(s);
        }

        System.out.println("-----------------");

        //Lambda表达式
        collection.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                //s一次表示集合中的每一个数据
                //底层也是便利集合,以此获得每一个元素
                //也不会更改数据
                //相当于增强for
                s="asdasd";
                System.out.println(s);
            }
        });

        System.out.println("-----------------");
        collection.forEach(s -> {
            System.out.println(s);
        });

    }
}
